home *** CD-ROM | disk | FTP | other *** search
/ BBS Toolkit / BBS Toolkit.iso / rbbs_pc / 173amrg.zip / CSUB173A.MRG < prev    next >
Text File  |  1990-08-26  |  43KB  |  887 lines

  1. * ------------[ BLED merge (c) Ken Goosens ]-------------
  2. * Merge this against D:\172B\CNFG-SUB.BAS to produce CNFG-SUB.BAS
  3. * D:\172B\CNFG-SUB.BAS:  Date 2-10-1990  Size 97349 bytes
  4. * ------------[ Created 08-26-1990 11:36:09 ]------------
  5. * REPLACING old line(s) by new
  6. ' $linesize:132
  7. * ------[ first line different ]------
  8. ' $title: 'CNFG-SUB.BAS 17.3A, Copyright 1987-90 by D. Thomas Mack'  ' DA081003
  9. '  Copyright 1990 by D. Thomas Mack, all rights reserved.
  10. '  Name ...............: CNFG-SUB.BAS
  11. '  First Released .....: February 11, 1990
  12. '  Subsequent Releases.: August 26, 1990
  13. '  Copyright ..........: 1987-90
  14. '  Purpose.............: The Remote Bulletin Board System for the IBM PC,
  15. '                        RBBS-PC, configuration program -- CONFIG.BAS
  16. '                        utilizes a lot of menus and string space.
  17. '                        These are incorporated within CNFG-SUB.BAS as a
  18. '                        seperately callable subroutines in order to free
  19. '                        up as much code as possible within the 64K code
  20. '                        segment used by CONFIG.BAS.
  21. '  Parameters..........: Most parameters are passed via a COMMON statement.
  22. '
  23. ' Subroutine  Line      Function of Subroutine
  24. '    Name    Number
  25. ' ALLCAPS    61212+     Captialize a string
  26. ' ANSIDECODE 62040+     Convert ANSI strings into english text expressions
  27. ' ANYINTEGER 61450      Prompt for any integer
  28. ' ANYNUMBER  61400      Prompt for any number
  29. ' ASKRO      61100      Ask a question on a specific row
  30. ' ASKUPOS    61300      Ask for identifying field in USERS record
  31. ' BRKFNAME   61830      Break file name in drive/path, prefix, extension
  32. ' CHKFMSDIR  61700      Check FMS directory for valid structure
  33. ' CHKPERSDIR 61755      Check Personal directory format
  34. ' CNFGINIT   60385      Initialize CONFIG's constants
  35. ' COLORCODE  62040+     Convert response into ANSI-meaningful strings
  36. ' DISPLAY    12190      Display the CONFIG menu pages
  37. ' FINDFILE   61600      Determine whether a file exists
  38. ' FINDLAST   61850      Find last occurence of a character in a string
  39. ' GETANSI    62000      Prompt for ANSI colors to be used
  40. ' GETASCII   61810      Get any character by character or ascii value
  41. ' GETCOLOR   61950      Process request for setting color
  42. ' GETINIT    61110      Get answers that are integers
  43. ' GETNUMYN   61150      Get TRUE/FALSE answer to a YES/NO question
  44. ' GETYESNO   61200      Ask a question with a "yes" or "no" response
  45. ' HANDERR    61775+     Handle error checking for FMS directories
  46. ' MMINTEGER  61500      Prompt for integer with min and a max
  47. ' NETTYPE    60382      Prompt for supported network types
  48. ' REMOVE     61800      Remove characters from a string
  49. ' SECURE     61860      Allow commands and their security level to be changed
  50. ' SELMODEM   62100      Select modem to set modem strings
  51. ' TRIMTRAIL  61840      Remove trailing characters from a string
  52. '
  53. '  $INCLUDE: 'CNFG-VAR.BAS'
  54. '
  55. '  $SUBTITLE: 'DISPLAY - subroutine to display CONFIG's menus'
  56. '  $PAGE
  57. '
  58. '  SUBROUTINE NAME    --  DISPLAY
  59. '
  60. '  INPUT PARAMETERS   --  PARAMETER        DESCRIPTION
  61. '                         IX = 0           DISPLAY THE CHOICE OF MENUS
  62. '                         IX = -1          RE-READ THE INPUT (INVALID REQUEST)
  63. '                         IX > 0           DISPLAY THE APPROPRIATE PAGE
  64. '
  65. '  OUTPUT PARAMETERS  --  HJ$              OPTION SELECTED
  66. '                         IPAGE            MENU PAGE CONTAINING OPTION
  67. '                         ILOOKUP          INDEX (1 TO 20) OF OPTION SELECTED
  68. '
  69. '  SUBROUTINE PURPOSE --  TO DISPLAY CONFIG'S MENUS AND REQUEST OPTION
  70. '
  71.       SUB DISPLAY STATIC
  72. '
  73. ' *  DISPLAY CONFIG'S MAIN FUNCTION KEY MENU
  74. '
  75.       IF IX > 0 THEN _
  76.          GOTO 12320
  77.       IF IX = -1 THEN _
  78.          GOTO 12590
  79. * REPLACING old line(s) by new
  80. 12360 DISPLAYED.PAGE.NUMBER = 1
  81.       GOSUB 24800
  82.       LOCATE  3,1
  83.       PRINT " 1. SYSOP's Public First Name -------------------- " + SYSOP.FIRST.NAME$
  84.       PRINT " 2. SYSOP's Public Last Name --------------------- " + SYSOP.LAST.NAME$
  85.       PRINT " 3. SYSOP's default expert mode at signon -------- " + EXPERT.USER$
  86.       PRINT " 4. SYSOP's office hours -------------------------"STR$(START.OFFICE.HOURS);" to"STR$(END.OFFICE.HOURS)
  87.       PRINT " 5. Page SYSOP using printer's bell -------------- " + M11$
  88.       PRINT " 6. Go off-line whenever a DISK FULL occurs ------ " ; FNYESNO$(DISKFULL.GO.OFFLINE)
  89.       PRINT " 7. Prompt bell default is ----------------------- " + PROMPT.BELL$
  90.       PRINT " 8. Maximum time per session (in minutes) --------"STR$(MINUTES.PER.SESSION!)
  91.       PRINT " 9. Maximum minutes per day ----------------------";STR$(MAX.PER.DAY)
  92.       PRINT "10. Factor to extend session time for uploads ----" + STR$(UPLOAD.TIME.FACTOR!)
  93.       PRINT "11. # Months of inactivity before user deleted ---"STR$(ACT.MNTHS.B4.DELETING)
  94.       PRINT "12. Name of RBBS-PC shown initially is ----------- " + RBBS.NAME$
  95.       PRINT "13. Foreground color (for color monitors) is -----"STR$(FG)
  96.       PRINT "14. Background color (for color monitors) is -----"STR$(BG)
  97.       PRINT "15. The border color (for color monitors) is -----"STR$(BORDER)
  98.       PRINT "16. Your CONFIG.SYS contains 'DEVICE=ANSI.SYS'---- " + FNYESNO$(DOSANSI)
  99.       IF SMART.TEXT THEN _
  100.          SMART.TEXT$ = STR$(SMART.TEXT) _
  101. * ------[ first line different ]------
  102.       ELSE SMART.TEXT$ = NONE.PICKED$                                ' KG080301
  103.       PRINT "17. Control character for SMART TEXT -------------" + SMART.TEXT$
  104.       PRINT "18. File with automatic operator page parameters - " ; AUTOPAGE.DEF$
  105.       X = INSTR("ANS",LOGON.MAIL.LEVEL$)
  106.       IF X < 1 THEN _
  107.          X = 1
  108.       X$ = MID$("OLD & NEWNEW ONLY NONE",9*X-8,9)
  109.       IF X$ = "NONE" THEN _
  110.          X$ = NONE.PICKED$
  111.       PRINT "19. Personal mail notification level at logon is - " + X$
  112.       GOTO 12580
  113. * REPLACING old line(s) by new
  114. 12466 DISPLAYED.PAGE.NUMBER = 8
  115.       GOSUB 24800
  116.       LOCATE  3,1
  117.       PRINT "141. Call-back verification ----------------------- " + NOT.YET.IN$ ' CALLBACK.VERIFICATION$
  118.       PRINT "142. Drive/path where personal files & dir stored - " + PERSONAL.DRVPATH$
  119.       PRINT "143. Name of Personal Directory ------------------- " + PERSONAL.DIR$
  120. * ------[ first line different ]------
  121.       PRINT "144. Protocol required for personal downloads ----- " + MID$("<other><none> Ascii  XMODEM Xm/CRC Kermit Ymodem Imodem YmodemGWxmodem", 7 * INSTR("NAXCKYIGW",PERSONAL.PROTOCOL$) + 1,7)  ' EC060601
  122.       PRINT "145. Files with download security are listed in --- " + FILESEC.FILE$
  123.       PRINT "146. File name with privileged group passwords is - " + PASSWORD.FILE$
  124.       PRINT "147. Concatenate multi-file ASCII downloads ------- " + FNYESNO$(PERSONAL.CONCAT)
  125.       PRINT "148. Min SECURITY to CATEGORIZE uploads -----------" + STR$(SL.CATEGORIZE.UPLOADS)
  126.       PRINT "149. Min security level to view new uploads -------" + STR$(MIN.SEC.TO.VIEW)
  127.       PRINT "150. Security level exempt from 'epi-log' file ----" + STR$(SECURITY.EXEMPT.FROM.EPILOG)
  128.       PRINT "151. Min. security to 'AUTO ADD' conference user -- " + AUTO.ADD.SECURITY$ ' KG062301
  129.       PRINT "152. Min. security for old caller to turbo logon --" + STR$(ALLOW.CALLER.TURBO)
  130.       PRINT "153. Min. security to describe an existing file ---" + STR$(ADD.DIR.SECURITY)
  131.       PRINT "154. Help file to display for a security violation- " + SECVIO.HLP$
  132.       TIME.LOCK$ = MID$("<none> DOORS  DOWNLDSBOTH   ",TIME.LOCK*7+1,7)
  133.       PRINT "155. Time lock on DOORS and DOWNLOADS ------------- "; TIME.LOCK$
  134.       PRINT "156. Min. sec level exempt from auto-update of sec-" ; AUTO.UPGRADE.SEC
  135.       PRINT "157. Min security to READ & KILL all messages -----" ; SEC.KILL.ANY
  136.       PRINT "158. Do not display lines in msgs beginning with -- "; SCREEN.OUT.MSG$ ' KG041101
  137.       GOTO 12580
  138. * REPLACING old line(s) by new
  139. 12470 DISPLAYED.PAGE.NUMBER = 9
  140.       GOSUB 30040
  141.       ' MAX.USR.FILE.SIZE.FRM.DEF = HIGHEST.USER.RECORD
  142.       MAX.MSG.FILE.SIZE.FRM.DEF! = HIGHEST.MESSAGE.RECORD
  143.       MAX.ALLOWED.MSGS.FRM.DEF  = MAXIMUM.NUMBER.OF.MSGS
  144.       GOSUB 24800
  145.       LOCATE  3,1
  146.       PRINT "161. Maximum number of concurrent RBBS-PC's  -------" + STR$(MAXIMUM.NUMBER.OF.NODES)
  147.       MT$ = "single RBBS-PC copy "
  148.       IF MAXIMUM.NUMBER.OF.NODES <> 1 THEN _
  149.          MT$ = "concurrent RBBS-PC's" : _
  150.          SUBROUTINE.PARAMETER = 2 : _
  151.          IF NETWORK.TYPE < 0 OR NETWORK.TYPE > 7 THEN _
  152.             SUBROUTINE.PARAMETER = 1 : _
  153.             CALL NETTYPE : _
  154.          ELSE CALL NETTYPE
  155.       IF NETWORK.TYPE = 6 THEN _
  156.          MT$ = "NETBIOS             "
  157.       IF NETWORK.TYPE = 7 THEN _
  158.          MT$ = "DoubleDOS           "
  159.       PRINT "162. Environment running " + MT$ + " ------ " + NETWORK.TYPE$
  160.       PRINT "163. RBBS-PC 'recycle' method when users log off --- " + RECYCLE.TO.DOS$
  161.       FILE$ = MAIN.MESSAGE.FILE$
  162.       GOSUB 30180
  163.       MAX.MSG.FILE.SIZE.FRM.DEF! = UG
  164. * ------[ first line different ]------
  165.       IF CONFERENCE.MODE <> 1 THEN _                                 ' KG062302
  166.          X$ = "MAIN" _                                               ' KG062302
  167.       ELSE X$ = ZConfName$                                           ' KG062302
  168.       PRINT "164. Number of records in " ;X$;" User File ";STRING$(15-LEN(X$),"-");STR$(MAX.USR.FILE.SIZE.FRM.DEF) ' KG062302
  169.       IF MAIN.MESSAGE.FILE$ = MAINMSG$ THEN _                        ' KG062302
  170.          X$ = "MAIN" _                                               ' KG062302
  171.       ELSE X$ = ZConfName$                                           ' KG062302
  172.       PRINT "165. Number of records in " ;X$;" Message File ";STRING$(12-LEN(X$),"-");STR$(MAX.MSG.FILE.SIZE.FRM.DEF!) ' KG062302
  173.       PRINT "166. Maximum number of messages allowed ------------" ; STR$(MAX.ALLOWED.MSGS.FRM.DEF) ' KG062302
  174.       PRINT "167. Conference File Maintenance."
  175.       IF DEFAULT.EXTENSION$ = "" THEN _                              ' KG080101
  176.          X$ = NONE.PICKED$ _                                         ' KG080301
  177.       ELSE X$ = DEFAULT.EXTENSION$                                   ' KG080101
  178.       PRINT "168. Default extension for compressed files -------- " ; X$ ' KG080101
  179.       PRINT "169. Additional extensions for compressed files ---- " ; COMPRESSED.EXT$
  180.       PRINT "170. Message file GROWS in size as messages added -- " ; FNYESNO$(MESSAGES.CAN.GROW)
  181.       GOTO 12580
  182. * REPLACING old line(s) by new
  183. 12500 DISPLAYED.PAGE.NUMBER = 12
  184.       GOSUB 24800
  185.       LOCATE 3,1
  186.       PRINT "221. Communications port to be used by RBBS-PC ---- " + COM.PORT$
  187.       PRINT "222. # of seconds to wait for modem to initialize -" + STR$(MODEM.INIT.WAIT.TIME)
  188.       PRINT "223. Seconds to wait before issuing modem commands-" + STR$(MODEM.COMMAND.DELAY.TIME)
  189.       PRINT "224. Number of rings to wait before answering -----" + STR$(REQUIRED.RINGS);
  190. * ------[ first line different ]------
  191.       IF INSTR(USER.INIT.COMMAND$, "S0=255") > 0 THEN _              ' DA080503
  192.          PRINT " RING BACK";
  193.       PRINT
  194.       PRINT "225. Set the modem commands"
  195.       PRINT "226. ---------------------------------------------- "
  196.       PRINT "227. Issue modem commands between rings ----------- " ; FNYESNO$(COMMANDS.BETWEEN.RINGS)
  197.       PRINT "228. Baud rate to initially open modem at --------- " + MODEM.INIT.BAUD$
  198.       X$ = STR$(WAIT.BEFORE.DISCONNECT) + " seconds"
  199.       IF WAIT.BEFORE.DISCONNECT = 0 THEN _
  200.          X$ = "NO"
  201.       PRINT "229. Log off user who are idle for ----------------" + X$
  202.       PRINT "230. Are you using a 'DUMB' auto-answer modem? ---- " ; FNYESNO$(DUMB.MODEM)
  203.       PRINT "231. Initialize modem firmware for RBBS-PC."
  204.       PRINT "232. # seconds to wait after dropping DTR ---------"  + STR$(DTR.DROP.DELAY)
  205.       PRINT "233. File with PROTOCOL definitions --------------- " + PROTO.DEF$
  206.       PRINT "234. Always check caller for AUTODOWNLOAD support - " ; FNYESNO$(ASK.IDENTITY)
  207.       PRINT "235. Require non-ascii protocol for BASIC files --- " ; FNYESNO$(REQUIRE.NON.ASCII)
  208.       X$ = STR$(RECYCLE.WAIT) + " minutes"
  209.       IF RECYCLE.WAIT = 0 THEN _
  210.          X$ = "<Don't recycle>"
  211.       PRINT "236. Recycle if no calls are received within ------" + X$
  212.       PRINT "237. Leave modem at initial baud ------------------ " + FNYESNO$(KEEP.INIT.BAUD)
  213.       GOTO 12580
  214. * REPLACING old line(s) by new
  215. 12510 DISPLAYED.PAGE.NUMBER = 14
  216.       GOSUB 24800
  217. * ------[ first line different ]------
  218.       LOCATE 3,1                                                     ' KG080301
  219.       IF TIME.TO.DROP.TO.DOS < 1 THEN _                              ' KG080301
  220.          TIME.TO.DROP.TO.DOS$ = NONE.PICKED$ _                       ' KG080301
  221.       ELSE TIME.TO.DROP.TO.DOS$ = STRING$(4 - (LEN(STR$(TIME.TO.DROP.TO.DOS)) - 1),"0") + MID$(STR$(TIME.TO.DROP.TO.DOS),2) ' KG080301
  222. * REPLACING old line(s) by new
  223. 24970 LOCATE 2,1
  224.       PRINT SPACE$(10)
  225. * ------[ first line different ]------
  226.       LOCATE 2,10                                                    ' KG062303
  227.       PRINT "(Conference Maintenance Mode for " + _                  ' KG062303
  228.             ZConfName$ + _                                           ' KG062303
  229.             ")";
  230.       RETURN
  231. '
  232. ' * COMMON SUBROUTINE TO READ THE MESSAGES FILE'S CHECKPOINT RECORD
  233. '
  234. * REPLACING old line(s) by new
  235. 60385 SUB CNFGINIT STATIC
  236. '
  237. ' * INITALIZE ALL VARIABLES IF A .DEF FILE DOESN'T AREADY EXIST
  238. '
  239.       D$ = DD$
  240.       DRV$ = LEFT$(D$,1)
  241.       FALSE                      = 0
  242.       TRUE                       = NOT FALSE
  243.       SYSOP.SECURITY.LEVEL       = 10
  244.       ACT.MNTHS.B4.DELETING      = 1
  245.       ACTIVE.BULLETINS           = 6
  246.       ADD.DIR.SECURITY           = SYSOP.SECURITY.LEVEL
  247.       ALLOW.CALLER.TURBO         = 6
  248.       ALTDIR.EXTENSION$          = ""
  249.       ALWAYS.STREW.TO$           = ""
  250.       ANS.MENU$                  = D$ + "MENUA"
  251.       ASK.EXTENDED.DESC          = SYSOP.SECURITY.LEVEL
  252.       ASK.IDENTITY               = FALSE
  253.       AUTO.ADD.SECURITY          = 5
  254.       AUTO.UPGRADE.SEC           = SYSOP.SECURITY.LEVEL
  255.       AUTOPAGE.DEF$              = D$ + "AUTOPAGE.DEF"
  256.       BG                         = 0
  257.       BORDER                     = 0
  258.       BUFFER.SIZE                = 128
  259.       BULLETIN.MENU$             = "BULLET"
  260.       BULLETIN.PREFIX$           = "BULLET"
  261.       BULLETINS.OPTIONAL         = TRUE
  262.       C$                         = ""
  263.       CALLER.BKGRD               = 0
  264.       CALLERS.FILE$              = D$ + "CALLERS"
  265.       SEC.KILL.ANY               = SYSOP.SECURITY.LEVEL
  266.       COM.PORT$                  = "COM1"
  267.       COMMANDS.BETWEEN.RINGS     = FALSE
  268.       COMMANDS.IN.PROMPT         = TRUE
  269.       COMMENTS.AS.MESSAGES       = FALSE
  270.       COMMENTS.FILE$             = D$ + "COMMENTS"
  271.       COMPRESSED.EXT$            = ".ARC.PAK"
  272.       COMPUTER.TYPE              = 0
  273.       CONFERENCE.MENU$           = D$ + "CONFENCE"
  274.       CONFERENCE.VIEWER.SEC.LVL  = 0
  275.       CONFMAIL.LIST$             = D$ + "CONFMAIL.DEF"
  276. * ------[ first line different ]------
  277.       CONFIG.VERSION$            = "Version 17.3A"                   ' DA081003
  278.       DEFAULT.CATEGORY.CODE$     = "UNC"
  279.       DAYS.IN.SUBSCRIPTION.PERIOD = 365
  280.       DAYS.TO.WARN               = 60
  281.       DIR.CATEGORY.FILE$         = D$ + "DIR.CAT"
  282.       DIRECTORY.PREFIX$          = "DIR"
  283.       DEFAULT.ECHOER$            = "R"
  284.       DEFAULT.LINE.ACK$          = ""
  285.       DEFAULT.SECURITY.LEVEL     = 5
  286.       DIRECTORY.EXTENTION$       = "DIR"
  287.       DIRECTORY.PATH$            = D$
  288.       DISK.FOR.DOS$              = D$
  289.       DISKFULL.GO.OFFLINE        = TRUE
  290.       DNLD.SUB                   = 0
  291.       DOORS.AVAILABLE            = FALSE
  292.       DOORS.DEF$                 = D$ + "DOORS.DEF"
  293.       DOORS.TERMINAL.TYPE        = 8
  294.       DOSANSI                    = FALSE
  295.       DOS.VERSION                = 2
  296.       DOWNLOAD.DRIVES$           = DRV$ + DRV$
  297.       DOWNLOAD.TO.SUBDIR         = FALSE
  298.       DRIVE.FOR.BULLETINS$       = D$
  299.       DRIVE.FOR.HELP.FILES$      = D$
  300.       DTR.DROP.DELAY             = 3
  301.       DUMB.MODEM                 = FALSE
  302.       ECHOER$                    = "R"
  303.       EMPHASIZE.OFF.DEF$         = "[27]" + "[0;40;33m"
  304.       EMPHASIZE.ON.DEF$          = "[27]" + "[1;41;37m"
  305.       END.OFFICE.HOURS           = 2200
  306.       ENFORCE.UPLOAD.DOWNLOAD.RATIOS = FALSE
  307.       EPILOG$                    = D$ + "EPILOG.DEF"
  308.       ESCAPE.INSECURE            = FALSE
  309.       EXPERT.USER                = 0
  310.       EXPIRED.SECURITY           = DEFAULT.SECURITY.LEVEL
  311.       EXTENDED.LOGGING           = FALSE
  312.       EXTENSION.LIST$            = "ZIP"
  313.       FAST.FILE.LIST$            = D$ + "FIDX.DEF"
  314.       FAST.FILE.LOCATOR$         = D$ + "LIDX.DEF"
  315.       FC                         = 5
  316.       FG                         = 7
  317.       FG.1.DEF$                  = "Bright Green"
  318.       FG.2.DEF$                  = "Bright Yellow"
  319.       FG.3.DEF$                  = "Bright Purple"
  320.       FG.4.DEF$                  = "Bright Cyan"
  321.       FILE.COMMANDS.DEFAULTS$    = "DGLNPSUV"
  322.       FILE.COMMANDS$             = FILE.COMMANDS.DEFAULTS$
  323.       FILE.NOTIFY                = FALSE
  324.       FILES.FUNCTION$(1,1)       = "D)ownload a file      "
  325.       FILES.FUNCTION$(2,1)       = "G)oodbye              "
  326.       FILES.FUNCTION$(3,1)       = "L)ist file directory  "
  327.       FILES.FUNCTION$(4,1)       = "N)ew file search      "
  328.       FILES.FUNCTION$(5,1)       = "P)ersonal files       "
  329.       FILES.FUNCTION$(6,1)       = "S)earch files         "
  330.       FILES.FUNCTION$(7,1)       = "U)pload a file        "
  331.       FILES.FUNCTION$(8,1)       = "V)erbose archive list "
  332.       FILES.FUNCTION$(1,2)       = "D"
  333.       FILES.FUNCTION$(2,2)       = "G"
  334.       FILES.FUNCTION$(3,2)       = "L"
  335.       FILES.FUNCTION$(4,2)       = "N"
  336.       FILES.FUNCTION$(5,2)       = "P"
  337.       FILES.FUNCTION$(6,2)       = "S"
  338.       FILES.FUNCTION$(7,2)       = "U"
  339.       FILES.FUNCTION$(8,2)       = "V"
  340.       FILESEC.FILE$              = D$ + "FILESEC"
  341.       FIRST.NAME.PROMPT$         = "FIRST name"
  342.       FOSSIL                     = 0
  343.       GB                         = FC
  344.       GLOBAL.COMMANDS.DEFAULTS$  = "H?QX"
  345.       GLOBAL.COMMANDS$           = GLOBAL.COMMANDS.DEFAULTS$
  346.       GLOBAL.FUNCTION$(1,1)      = "H)elp on-line           "
  347.       GLOBAL.FUNCTION$(2,1)      = "?)help on-line (=H)     "
  348.       GLOBAL.FUNCTION$(3,1)      = "Q)uit this part         "
  349.       GLOBAL.FUNCTION$(4,1)      = "X)Expert toggle on/off  "
  350.       GLOBAL.FUNCTION$(1,2)      = "H"
  351.       GLOBAL.FUNCTION$(2,2)      = "?"
  352.       GLOBAL.FUNCTION$(3,2)      = "Q"
  353.       GLOBAL.FUNCTION$(4,2)      = "X"
  354.       GO.TO.SHELL                = TRUE
  355.       HELP$(3)                   = "HELP03"
  356.       HELP$(4)                   = "HELP04"
  357.       HELP$(7)                   = "HELP07"
  358.       HELP$(9)                   = "HELP09"
  359.       HELP.EXTENSION$            = "HLP"
  360.       HELP.FILE.PREFIX$          = "HELP0"
  361.       HELP.PATH$                 = D$
  362.       HOST.ECHO.OFF$             = ""
  363.       HOST.ECHO.ON$              = ""
  364.       IB                         = 0
  365.       KEEP.INIT.BAUD             = FALSE
  366.       KEEP.TIME.CREDITS          = FALSE
  367.       LAST.NAME.PROMPT$          = "LAST name"
  368.       LEN.HASH                   = 31
  369.       LEN.INDIV                  = 0
  370.       LIBRARY.ARCHIVE.PATH$        = D$
  371.       LIBRARY.ARCHIVE.PROGRAM$     = "ARCA "
  372.       LIBRARY.COMMANDS.DEFAULTS$   = "ACDGLSV"
  373.       LIBRARY.COMMANDS$            = LIBRARY.COMMANDS.DEFAULTS$
  374.       LIBRARY.DRIVE$               = ""
  375.       LIBRARY.MAX.DISK             = 705
  376.       LIBRARY.MAX.DIRECTORY        = 7
  377.       LIBRARY.MAX.SUBDIR           = 100
  378.       LIBRARY.SUBDIR.PREFIX$       = "DISK"
  379.       LIBRARY.DIRECTORY.PATH$      = D$
  380.       LIBRARY.DIRECTORY.EXTENTION$ = "CDR"
  381.       LIBRARY.FUNCTION$(1,1)       = "A)rchive a Library disk  "
  382.       LIBRARY.FUNCTION$(2,1)       = "C)hange Library disk     "
  383.       LIBRARY.FUNCTION$(3,1)       = "D)ownload a file         "
  384.       LIBRARY.FUNCTION$(4,1)       = "G)oodbye                 "
  385.       LIBRARY.FUNCTION$(5,1)       = "L)ist a file directory   "
  386.       LIBRARY.FUNCTION$(6,1)       = "S)earch files            "
  387.       LIBRARY.FUNCTION$(7,1)       = "V)erbose archive list    "
  388.       LIBRARY.FUNCTION$(1,2)       = "A"
  389.       LIBRARY.FUNCTION$(2,2)       = "C"
  390.       LIBRARY.FUNCTION$(3,2)       = "D"
  391.       LIBRARY.FUNCTION$(4,2)       = "G"
  392.       LIBRARY.FUNCTION$(5,2)       = "L"
  393.       LIBRARY.FUNCTION$(6,2)       = "S"
  394.       LIBRARY.FUNCTION$(7,2)       = "V"
  395.       LIBRARY.WORK.DISK.PATH$      = D$
  396.       LIMIT.SEARCH.TO.FMS        = FALSE
  397.       LOGON.MAIL.LEVEL$          = "A"
  398.       LSB                        = 1016
  399. * REPLACING old line(s) by new
  400. 60390 MACRO.DRVPATH$             = D$
  401.       MACRO.EXTENSION$           = ""
  402.       MAIN.COMMANDS.DEFAULTS$    = "ABCDEFIJKOPRSTUVW@"
  403.       MAIN.COMMANDS$             = MAIN.COMMANDS.DEFAULTS$
  404.       MAIN.FUNCTION$(1,1)        = "A)nswer questionnaire  "
  405.       MAIN.FUNCTION$(2,1)        = "B)ulletins             "
  406.       MAIN.FUNCTION$(3,1)        = "C)omments              "
  407.       MAIN.FUNCTION$(4,1)        = "D)oor subsystem        "
  408.       MAIN.FUNCTION$(5,1)        = "E)nter message         "
  409.       MAIN.FUNCTION$(6,1)        = "F)iles subsystem       "
  410.       MAIN.FUNCTION$(7,1)        = "I)nitial welcome       "
  411.       MAIN.FUNCTION$(8,1)        = "J)oin a conference     "
  412.       MAIN.FUNCTION$(9,1)        = "K)ill messages         "
  413.       MAIN.FUNCTION$(10,1)       = "O)perator page         "
  414.       MAIN.FUNCTION$(11,1)       = "P)ersonal mail         "
  415.       MAIN.FUNCTION$(12,1)       = "R)ead messages         "
  416.       MAIN.FUNCTION$(13,1)       = "S)can messages header  "
  417.       MAIN.FUNCTION$(14,1)       = "T)opic msg scan        "
  418.       MAIN.FUNCTION$(15,1)       = "U)tilities subsystem   "
  419.       MAIN.FUNCTION$(16,1)       = "V)iew conference mail  "
  420.       MAIN.FUNCTION$(17,1)       = "W)ho's on other nodes  "
  421.       MAIN.FUNCTION$(18,1)       = "@)Library subsystem    "
  422.       MAIN.FUNCTION$(1,2)        = "A"
  423.       MAIN.FUNCTION$(2,2)        = "B"
  424.       MAIN.FUNCTION$(3,2)        = "C"
  425.       MAIN.FUNCTION$(4,2)        = "D"
  426.       MAIN.FUNCTION$(5,2)        = "E"
  427.       MAIN.FUNCTION$(6,2)        = "F"
  428.       MAIN.FUNCTION$(7,2)        = "I"
  429.       MAIN.FUNCTION$(8,2)        = "J"
  430.       MAIN.FUNCTION$(9,2)        = "K"
  431.       MAIN.FUNCTION$(10,2)       = "O"
  432.       MAIN.FUNCTION$(11,2)       = "P"
  433.       MAIN.FUNCTION$(12,2)       = "R"
  434.       MAIN.FUNCTION$(13,2)       = "S"
  435.       MAIN.FUNCTION$(14,2)       = "T"
  436.       MAIN.FUNCTION$(15,2)       = "U"
  437.       MAIN.FUNCTION$(16,2)       = "V"
  438.       MAIN.FUNCTION$(17,2)       = "W"
  439.       MAIN.MESSAGE.BACKUP$       = D$ + "MESSAGES.BAK"
  440.       MAIN.MESSAGE.FILE$         = D$ + "MESSAGES"
  441.       MAIN.PUI$                  = D$ + "MAIN.PUI"
  442.       MAIN.USER.FILE$            = D$ + "USERS"
  443.       MASTER.DIRECTORY.NAME$     = ""
  444.       MAX.ALLOWED.MSGS.FRM.DEF   = 5
  445.       MAX.CARRIER.WAIT           = 30
  446.       MAX.DESC.LEN               = 40
  447.       MAX.EXTENDED.LINES         = 2
  448.       MAX.MESSAGE.LINES          = 19
  449.       MAX.PER.DAY                = 0
  450.       MAX.REG.SEC                = 0
  451.       MAX.USR.FILE.SIZE.FRM.DEF  = 16
  452.       MAX.WORK.VAR               = 30
  453.       MAXD                       = 15
  454.       MAXIMUM.DISPLAYABLE.PAGES  = 17
  455.       MAXIMUM.PASSWORD.CHANGES   = 3
  456.       MAXIMUM.VIOLATIONS         = 5
  457.       MAXIMUM.NUMBER.OF.NODES    = 1
  458.       MENU$(1)                   = D$ + "MENU1"
  459.       MENU$(2)                   = D$ + "MENU2"
  460.       MENU$(3)                   = D$ + "MENU3"
  461.       MENU$(4)                   = D$ + "MENU4"
  462.       MENU$(5)                   = D$ + "MENU5"
  463.       MENU$(6)                   = D$ + "MENU6"
  464.       MENUS.CAN.PAUSE            = TRUE
  465.       MESSAGE.REMINDER           = TRUE
  466.       MESSAGES.CAN.GROW          = FALSE
  467.       MIN.NEWCALLER.BAUD         = 0
  468.       MIN.OLDCALLER.BAUD         = 0
  469.       MIN.SEC.TO.VIEW            = DEFAULT.SECURITY.LEVEL
  470.       MINIMUM.LOGON.SECURITY     = 0
  471.       MINIMUM.SECURITY.FOR.TEMP.PASSWORD = 5
  472.       MINUTES.PER.SESSION!       = 72
  473.       MLCOM                      = FALSE
  474.       MM                         = 5
  475. * ------[ first line different ]------
  476.       MO$                        = DD$                               ' KG080901
  477.       MUSIC                      = FALSE
  478.       NET.MAIL$                  = "<none>"
  479.       NETWORK.TYPE               = 0
  480.       NETWORK.TYPE$              = "IBM's DOS"
  481.       NEW.FILES.CHECK            = FALSE
  482.       NEW.USER.QUESTIONNAIRE$    = D$ + "RBBS-REG.DEF"
  483.       NEWUSER.FILE$              = D$ + "NEWUSER"
  484.       NEWUSER.SETS.DEFAULTS      = TRUE
  485.       OMIT.MAIN.DIRECTORY$       = "NO"
  486.       OMIT.UPLOAD.DIRECTORY$     = "NO"
  487.       OVERWRITE.SECURITY.LEVEL   = SYSOP.SECURITY.LEVEL
  488.       PAGE.LENGTH                = 23
  489.       PAGING.PRINTER.SUPPORT$    = ". "
  490.       PASSWORD.FILE$             = D$ + "PASSWRDS"
  491.       PCJR                       = FALSE
  492.       PERSONAL.BEGIN             = 1
  493.       PERSONAL.DIR$              = D$+"PRIV.DEF"
  494.       PERSONAL.DRVPATH$          = D$
  495.       PERSONAL.LEN               = 31
  496.       PERSONAL.CONCAT            = FALSE
  497.       PRELOG$                    = D$ + "PRELOG"
  498.       PRIVATE.READ.SEC           = DEFAULT.SECURITY.LEVEL
  499.       PROTO.DEF$                 = D$ + "PROTO.DEF"
  500.       PROMPT.BELL                = 0
  501.       PROMPT.HASH$               = "Name"
  502.       PROMPT.INDIV$              = ""
  503.       PS                         = 5
  504.       PUBLIC.READ.SEC            = DEFAULT.SECURITY.LEVEL
  505.       QUES.PATH$                 = D$
  506.       RBBS.BAT$                  = D$ + "RBBS" + NODE.ID$ + ".BAT"
  507.       RBBS.NAME$                 = "RBBS-PC"
  508.       RCTTY.BAT$                 = D$ + "RCTTY" + NODE.ID$ + ".BAT"
  509.       RECYCLE.TO.DOS             = 0
  510.       RECYCLE.TO.DOS$            = "INTERNAL"
  511.       RECYCLE.WAIT               = 0
  512.       REDIRECT.IO.METHOD         = TRUE
  513.       REGISTRATION.PROGRAM$      = "<none>"
  514.       REMEMBER.NEW.USERS         = TRUE
  515.       REMIND.FILE.TRANSFERS      = FALSE
  516.       REMIND.PROFILE             = FALSE
  517.       REQUIRE.NON.ASCII          = TRUE
  518.       REQUIRED.QUESTIONNAIRE$    = "<none>"
  519.       REQUIRED.RINGS             = 1
  520.       RESTRICT.BAUD              = FALSE
  521.       RESTRICT.BY.DATE           = FALSE
  522.       RESTRICT.VALID.CMDS        = FALSE
  523.       RTS$                       = "NO"
  524.       SCREEN.OUT.MSG$            = "SEEN-BY: "
  525.       SEC.CHANGE.MSG             = SYSOP.SECURITY.LEVEL
  526.       SEC.LVL.EXEMPT.FRM.PURGING = SYSOP.SECURITY.LEVEL
  527.       SECVIO.HLP$                = D$ + "SECVIO." + HELP.EXTENSION$
  528.       SECURITY.EXEMPT.FROM.EPILOG= DEFAULT.SECURITY.LEVEL + 1
  529.       SF                         = SYSOP.SECURITY.LEVEL
  530.       SHOOT.YOURSELF             = FALSE
  531.       SHOW.SECTION               = TRUE
  532.       SIZE.OF.STACK              = 1024
  533.       SL.CATEGORIZE.UPLOADS      = SYSOP.SECURITY.LEVEL
  534.       SMART.TEXT                 = 123
  535.       START.HASH                 = 1
  536.       START.INDIV                = 0
  537.       START.OFFICE.HOURS         = 800
  538.       SURVIVE.NOUSER.ROOM        = FALSE
  539.       SWITCH.BACK                = FALSE
  540.       SYSOP.COMMANDS.DEFAULTS$   = "1234567"
  541.       SYSOP.COMMANDS$            = SYSOP.COMMANDS.DEFAULTS$
  542.       SYSOP.FUNCTION$(1,1)       = " 1 List comments      "
  543.       SYSOP.FUNCTION$(2,1)       = " 2 List CALLERS log   "
  544.       SYSOP.FUNCTION$(3,1)       = " 3 Recover a message  "
  545.       SYSOP.FUNCTION$(4,1)       = " 4 Erase comments     "
  546.       SYSOP.FUNCTION$(5,1)       = " 5 User maintenance   "
  547.       SYSOP.FUNCTION$(6,1)       = " 6 Toggle Page bell   "
  548.       SYSOP.FUNCTION$(7,1)       = " 7 Exit to DOS        "
  549.       SYSOP.FUNCTION$(1,2)       = " 1"
  550.       SYSOP.FUNCTION$(2,2)       = " 2"
  551.       SYSOP.FUNCTION$(3,2)       = " 3"
  552.       SYSOP.FUNCTION$(4,2)       = " 4"
  553.       SYSOP.FUNCTION$(5,2)       = " 5"
  554.       SYSOP.FUNCTION$(6,2)       = " 6"
  555.       SYSOP.FUNCTION$(7,2)       = " 7"
  556.       SYSOP.FIRST.NAME$          = "TOM"
  557.       SYSOP.LAST.NAME$           = "MACK"
  558.       SYSOP.MENU.SECURITY.LEVEL  = SYSOP.SECURITY.LEVEL
  559.       SYSOP.PASSWORD.1$          = "SECRET"                          ' DA081004
  560.       SYSOP.PASSWORD.2$          = "NAME"                            ' DA081004
  561.       TIME.TO.DROP.TO.DOS        = 0
  562.       TRASHCAN.FILE$             = D$ + "TRASHCAN"
  563.       TURN.PRINTER.OFF           = FALSE
  564.       TURBO.RBBS                 = TRUE
  565.       UE                         = 5
  566.       FMS.DIRECTORY$             = ""
  567.       UPCAT.HELP$                = "UPCAT"
  568.       UPLOAD.DIRECTORY$          = "99"
  569.       UPLOAD.PATH$               = D$
  570.       UPLOAD.SUBDIR$             = ""
  571.       UPLOAD.TIME.FACTOR!        = 0
  572.       UPLOAD.TO.SUBDIR           = FALSE
  573.       USE.BASIC.WRITES           = FALSE
  574.       USE.DEVICE.DRIVER$         = ""                                ' KG080901
  575.       USER.LOCATION$             = "CITY and STATE"
  576.       UTIL.COMMANDS.DEFAULTS$    = "BCEFGLMPRSTU"
  577.       UTIL.COMMANDS$             = UTIL.COMMANDS.DEFAULTS$
  578.       UTILITY.FUNCTION$(1,1)     = "B)aud rate            "
  579.       UTILITY.FUNCTION$(2,1)     = "C)lock (time)         "
  580.       UTILITY.FUNCTION$(3,1)     = "E)cho                 "
  581.       UTILITY.FUNCTION$(4,1)     = "F)ile x-fer protocol  "
  582.       UTILITY.FUNCTION$(5,1)     = "G)raphics             "
  583.       UTILITY.FUNCTION$(6,1)     = "L)ines per page       "
  584.       UTILITY.FUNCTION$(7,1)     = "M)sg margin setting   "
  585.       UTILITY.FUNCTION$(8,1)     = "P)assword change      "
  586.       UTILITY.FUNCTION$(9,1)     = "R)eview defaults      "
  587.       UTILITY.FUNCTION$(10,1)    = "S)tatistics           "
  588.       UTILITY.FUNCTION$(11,1)    = "T)oggle               "
  589.       UTILITY.FUNCTION$(12,1)    = "U)ser log scan        "
  590.       VOICE.TYPE                 = 0
  591.       VOICE.TYPE$                = NONE.PICKED$
  592.       XON.XOFF                   = FALSE
  593.       FOR I = 1 TO LEN(UTIL.COMMANDS.DEFAULTS$)
  594.          UTILITY.FUNCTION$(I,2) = MID$(UTIL.COMMANDS.DEFAULTS$,I,1)
  595.       NEXT
  596.       WAIT.BEFORE.DISCONNECT     = 180
  597.       WELCOME.FILE$              = D$ + "WELCOME"
  598.       WELCOME.INTERRUPTABLE      = TRUE
  599.       WILL.SUBDIRS.B.USED        = FALSE
  600.       WRITE.BUF.DEF              = 1024
  601.       FOR I = 1 TO NUM.SYSOP
  602.          SYSOP.FUNCTION(I) = SF
  603.       NEXT
  604.       FOR I = 1 TO NUM.MAIN
  605.          MAIN.FUNCTION(I) = MM
  606.       NEXT
  607.       FOR I = 1 TO NUM.FILES
  608.          FILES.FUNCTION(I) = FC
  609.       NEXT
  610.       FOR I = 1 TO NUM.LIBRARY
  611.          LIBRARY.FUNCTION(I) = PS
  612.       NEXT
  613.       FOR I = 1 TO NUM.UTILITY
  614.          UTILITY.FUNCTION(I) = UE
  615.       NEXT
  616.       FOR I = 1 TO NUM.GLOBAL
  617.          GLOBAL.FUNCTION(I) = GB
  618.       NEXT
  619.       CALL MODEMINITCMD
  620.       END SUB
  621. '  $SUBTITLE: 'VOICETYPE - subroutine to select voice'
  622. '  $PAGE
  623. '
  624. '  SUBROUTINE NAME    --  VOICETYPE
  625. '
  626. '  INPUT PARAMETERS   --  VOICE.TYPE
  627. '                         VOICE.TYPE$
  628. '                         SUBROUTINE.PARAMETER
  629. '
  630. '  OUTPUT PARAMETERS  --  VOICE.TYPE
  631. '                         VOICE.TYPE$
  632. '
  633. '  SUBROUTINE PURPOSE --  TO SELECT THE RBBS-PC SUPPORTED VOICE
  634. '                         SYNTHESIZERS
  635. '
  636.       SUB VOICETYPE STATIC
  637.       ON SUBROUTINE.PARAMETER GOTO 60482,60484
  638. * REPLACING old line(s) by new
  639. 61212 ANS$ = "YES"
  640.       EXIT SUB
  641.       END SUB
  642. '  $SUBTITLE: 'ALLCAPS - convert a sting into all capital letters'
  643. '  $PAGE
  644. '
  645. '  SUBROUTINE NAME    --  ALLCAPS
  646. '
  647. '  INPUT PARAMETERS   --  PARAMETER         MENANING
  648. '                         STRNG$         STRING CONTAINING THE QUESTION
  649. '
  650. '  OUTPUT PARAMETERS  --  STRNG$         CAPITALIZED STRING
  651. '
  652. '  SUBROUTINE PURPOSE --  TO CAPITALIZE A STRING
  653. '
  654.       SUB ALLCAPS (STRNG$) STATIC
  655. * ------[ first line different ]------
  656.       FOR WasZ = 1 TO LEN(STRNG$)                                    ' KG072601
  657.          WasX = ASC(MID$(STRNG$,WasZ,1))                             ' KG072601
  658.          IF WasX > 96 THEN IF WasX < 123 THEN _                      ' KG072601
  659.             MID$(STRNG$,WasZ,1) = CHR$(WasX AND 223)                 ' KG072601
  660.       NEXT
  661.       END SUB
  662. '  $SUBTITLE: 'ASKUPOS - find the unique user field for USERS'
  663. '  $PAGE
  664. '
  665. '  SUBROUTINE NAME    --  ASKUPOS
  666. '
  667. '  INPUT PARAMETERS   --  PARAMETER         MENANING
  668. '                         HDR$           HEADER
  669. '                         BEGIN.COL      BEGINNING COLUMN OF FIELD
  670. '                         FIELD.LEN      LENGTH OF FIELD IN USER'S RECORD
  671. '                         PRMPT$         PROMPT TO GIVE FOR FIELD
  672. '
  673. '  OUTPUT PARAMETERS  --  ABOVE INPUTS UPDATED WITH USER'S RESPONSES
  674. '
  675. '  SUBROUTINE PURPOSE --  TO ASK THE SYSOP WHAT UNIQUE FIELD IN THE USERS
  676. '                         RECORD IS TO BE ASKED FOR AT LOGON
  677. '
  678.       SUB ASKUPOS (HDR$,BEGIN.COL,FIELD.LEN,PRMPT$) STATIC
  679.       CLS
  680.       LOCATE 3,20
  681.       PRINT HDR$;
  682. * REPLACING old line(s) by new
  683. 61810 CLS
  684.       LOCATE 8,30
  685.       PRINT TITLE$;
  686.       LOCATE 13,5
  687.       PRINT "Current value is"
  688.       PRINT STRNG$
  689.       PRINT
  690.       PRINT "Please enter the new values by entering the character"
  691.       PRINT "or enclosing its ASCII value in square brackets:"
  692.       PRINT "(Press ENTER to make empty)
  693.       LINE INPUT "";HJ$
  694.       STRNG$ = HJ$
  695.       END SUB
  696. ' $SUBTITLE: 'BRKFNAME - subroutine to decompose a file name'
  697. ' $PAGE
  698. '
  699. '  SUBROUTINE NAME    -- BRKFNAME
  700. '
  701. '  INPUT PARAMETERS   -- PARAMETER                     MEANING
  702. '                        FILENAME$       NAME OF THE FILE TO BE DECOMPOSED
  703. '                        FOR.JOINING     INDICATOR IF OUTPUT IS TO BE COMPBINED
  704. '
  705. '  OUTPUT PARAMETERS  -- DRVPATH$        DRIVE AND PATH
  706. '                        PREFIX$         8-CHARACTER FILE NAME PREFIX
  707. '                        EXTENSION$      3-CHARACTER EXTENSION
  708. '
  709. '  SUBROUTINE PURPOSE -- BREAKS DOWN A FILE NAME INTO A DRIVE AND PATH,
  710. '                        FILE PREFIX (8 CHARACTERS), AND FILE EXTENSION
  711. '                        (3 CHARACTERS).  IF "FOR.JOINING" IS TRUE, THE
  712. '                        DRIVE AND PATH HAVE A ":" AND A "\" IN IT AND
  713. '                        THE EXTENSION BEGINS WITH A ".".
  714. '
  715.       SUB BRKFNAME (FILENAME$,DRVPATH$,PREFIX$,EXTENSION$,FOR.JOINING) STATIC
  716. * ------[ first line different ]------
  717.       FLNAME$ = FILENAME$                                            ' DA082103
  718. * REPLACING old line(s) by new
  719. * ------[ first line different ]------
  720. 61830 CALL ALLCAPS (FLNAME$)                                         ' DA082103
  721.       DRVPATH$ = ""
  722.       PREFIX$ = ""
  723.       EXTENSION$ = ""                                                ' KG082301
  724.       L = LEN(FLNAME$)                                               ' DA082103
  725.       IF L < 1 THEN _                                                ' DA082103
  726.          EXIT SUB
  727.       CALL FINDLAST (FLNAME$,"\",X,Y)                                ' DA082103
  728.       IF X < 1 THEN _
  729.          IF MID$(FLNAME$,2,1) = ":" THEN _                           ' DA082103
  730.             DRVPATH$ = LEFT$(FLNAME$, 2): _                          ' DA082101
  731.             S = 3 _
  732.          ELSE S = 1 _
  733.       ELSE DRVPATH$ = LEFT$(FLNAME$,X) : _                           ' DA082101
  734.            S = X + 1
  735.       X = INSTR(FLNAME$+".",".")
  736.       IF X < L THEN _                                                ' DA082103
  737.          EXTENSION$ = MID$(FILENAME$,X)                              ' DA082101
  738.       IF S <= L THEN _                                               ' DA082103
  739.          IF X >= S THEN _                                            ' DA082103
  740.             PREFIX$ = MID$(FLNAME$,S,X - S)                          ' DA082103
  741.       IF FOR.JOINING THEN _                                          ' DA082101
  742.          EXIT SUB
  743.       IF Y > 1 THEN _                                                ' KG082301
  744.          DRVPATH$ = LEFT$(DRVPATH$, LEN(DRVPATH$) - 1)               ' DA082101
  745.       IF LEN(EXTENSION$) > 0 THEN _
  746.          EXTENSION$ = MID$(EXTENSION$, 2)                            ' DA082101
  747.       END SUB
  748. '
  749. '  $SUBTITLE: 'TRIMTRAIL - subroutine to trim off trailing characters'
  750. '  $PAGE
  751. '
  752. '  SUBROUTINE NAME    --  TRIMTRAIL
  753. '
  754. '  INPUT PARAMETERS   --  PARAMETER           MEANING
  755. '                         TRIM.PARM$  TIME IN SECONDS AFTER MIDNIGHT TO WAIT
  756. '                                     BEFORE DISPLAYING
  757. '                         TRIM.THIS$  WHAT CHARACTER TO TRIM OFF END
  758. '
  759. '  OUTPUT PARAMETERS  --  NONE
  760. '
  761. '  SUBROUTINE PURPOSE --  TO DISPLAY RBBS-PC's SYSOP MENU ON THE LOCAL SCREEN
  762. '
  763. * REPLACING old line(s) by new
  764. 61892 CALL ASKRO("New command for " + _
  765.                   MID$(COMMANDS$(FF,1),1,INSTR(COMMANDS$(FF,1),"  ")) + _
  766.                  "is?",24,HK$)
  767. * ------[ first line different ]------
  768.       IF HK$ = CHR$(34) THEN _                                       ' KG041702
  769.          GOTO 61892                                                  ' KG041702
  770.       X$ = MID$(HK$,1,1)
  771.       CALL ALLCAPS (X$)
  772.       IF LEN(HK$) > 1 THEN _
  773.          HK$ = X$ + MID$(HK$,2)
  774.       IF LEN (HK$) = 1 THEN _
  775.          HK$ = X$
  776.       COMMANDS$(FF,2) = HK$
  777.       MID$(SECTION.COMMANDS$,FF,1) = HK$
  778.       GOTO 61880
  779. * REPLACING old line(s) by new
  780. 62100 ' set modem strings by selecting a modem
  781.       SUB SELMODEM STATIC
  782.       CALL FINDFILE ("MODEMS.SET",OK)
  783. * ------[ first line different ]------
  784.       IF OK THEN _
  785.          GOTO 62103                                                  ' DA080503
  786.       CALL MODEMINITCMD                                              ' KG080901
  787.       EXIT SUB                                                       ' DA080503
  788. * INSERTING new line(s)
  789. 62103 CLOSE 2                                                        ' DA080503
  790.       IF NETWORK.TYPE = 6 THEN _                                     ' DA080503
  791.          OPEN "MODEMS.SET" FOR INPUT SHARED AS #2 _                  ' DA080503
  792.       ELSE OPEN "I",2,"MODEMS.SET"                                   ' DA080503
  793.       MODEM.MODEL = 0
  794.       MODEM.PAGE = 0                                                 ' DA081001
  795. * REPLACING old line(s) by new
  796. * ------[ first line different ]------
  797. 62105 CLS                                                            ' DA080503
  798.       PRINT "NUMBER";
  799.       LOCATE 1,10
  800.       PRINT "Modem Model";
  801.       LOCATE 1,40
  802.       PRINT "Switch Settings";
  803.       LOCATE 2,1
  804.       PRINT STRING$(78,"-");
  805.       FOR DISPLAY.LINE = 3 TO 19
  806.          IF EOF(2) THEN _
  807.             MODEM.PAGE = 1 : _                                       ' DA081001
  808.             GOTO 62110
  809.          MODEM.MODEL = MODEM.MODEL + 1
  810.          INPUT #2, MODEM.MODEL$, SWITCHES$
  811.          FOR I = 1 TO 14                    ' # MODEMS.SET parms - 2
  812.             INPUT #2,GARBAGE$
  813.          NEXT
  814.          LOCATE DISPLAY.LINE, 2
  815.          PRINT MODEM.MODEL;
  816.          LOCATE DISPLAY.LINE, 10
  817.          PRINT MODEM.MODEL$;
  818.          LOCATE DISPLAY.LINE, 40
  819.          PRINT SWITCHES$;
  820.       NEXT                                                           ' DA081001
  821.       LOCATE DISPLAY.LINE + 1, 2
  822.       PRINT " 0"
  823.       LOCATE DISPLAY.LINE + 1, 10
  824.       PRINT "Next Page"
  825. * INSERTING new line(s)
  826. 62110 LOCATE 24,10                                                   ' DA080503
  827.       PRINT "Use Parameter 231 to initialize modem's firmware";
  828.       CALL GETINIT("Select modem number, or [ENTER] to exit", _
  829.                     22,MODEM.PAGE,MODEM.MODEL,MODEM.SELECTED, CR)    ' DA081001
  830.       IF CR THEN _
  831.          EXIT SUB
  832.       IF MODEM.SELECTED = 0 THEN _                                   ' DA081001
  833.          GOTO 62105
  834.       CLOSE 2
  835.       IF NETWORK.TYPE = 6 THEN _
  836.          OPEN "MODEMS.SET" FOR INPUT SHARED AS #2 _
  837.       ELSE OPEN "I",2,"MODEMS.SET"
  838.       FOR I = 1 TO (MODEM.SELECTED - 1) * 16      ' # of parms * modem
  839.          INPUT #2,GARBAGE$
  840.       NEXT
  841.       INPUT #2, MODEM.MODEL$, _
  842.                 SWITCHES$, _
  843.                 USER.ANSWER.COMMAND$, _
  844.                 USER.COUNT.RINGS.COMMAND$, _
  845.                 USER.GO.OFFHOOK.COMMAND$, _
  846.                 USER.INIT.COMMAND$, _
  847.                 USER.RESET.COMMAND$, _
  848.                 USER.INITIALIZE.COMMAND$, _
  849.                 USER.FIRMWARE.CLEAR.CMND$, _
  850.                 USER.FIRMWARE.WRITE.CMND$, _
  851.                 RTS$, _
  852.                 MODEM.INIT.WAIT.TIME, _
  853.                 MODEM.COMMAND.DELAY.TIME, _
  854.                 COMMANDS.BETWEEN.RINGS, _
  855.                 MODEM.INIT.BAUD$, _
  856.                 KEEP.INIT.BAUD
  857.       CLOSE 2
  858.       END SUB
  859. 62120 SUB MODEMINITCMD STATIC                                        ' KG080901
  860.       RTS$ = "NO"                                                    ' DA080503
  861.       MODEM.INIT.WAIT.TIME = 3                                       ' DA080503
  862.       COMMANDS.BETWEEN.RINGS = FALSE                                 ' DA080503
  863.       FIRMWARE.INITIALIZE.COMMAND$ = "AT&C1&D3B1E0V1M0S0=0"          ' KG081402
  864.       FIRMWARE.CLEAR.COMMAND$ = "AT&F"                               ' DA080503
  865.       FIRMWARE.WRITE.COMMAND$ = "AT&W"                               ' DA080503
  866.       KEEP.INIT.BAUD = FALSE                                         ' DA080503
  867.       MODEM.ANSWER.COMMAND$      = "ATQ0X1V1A"
  868.       MODEM.COMMAND.DELAY.TIME   = 1
  869.       MODEM.COUNT.RINGS.COMMAND$ = "ATS1?"
  870.       MODEM.GO.OFFHOOK.COMMAND$  = "ATH1M0"                          ' DA080503
  871.       'MODEM.GO.OFFHOOK.COMMAND$  = "ATQ1E1H1M0"
  872.       MODEM.INIT.BAUD$           = "300"
  873.       MODEM.INIT.COMMAND$        = "ATE0M0Q0V1X1S0=254S2=255S10=20"  ' DA080503
  874.       'MODEM.INIT.COMMAND$        = "ATM0Q1S2=255S10=30E0Q0X1S0=254  "
  875.       MODEM.RESET.COMMAND$       = "ATZ"                             ' KG081402
  876.       'USER.INITIALIZE.COMMAND$   = "AT&C1&D3B1E0V1M0S0=0&T5"
  877.       'USER.FIRMWARE.WRITE.CMND$  = "&W"
  878.       USER.ANSWER.COMMAND$ = MODEM.ANSWER.COMMAND$                   ' DA080503
  879.       USER.COUNT.RINGS.COMMAND$ = MODEM.COUNT.RINGS.COMMAND$         ' DA080503
  880.       USER.GO.OFFHOOK.COMMAND$ = MODEM.GO.OFFHOOK.COMMAND$           ' DA080503
  881.       USER.INIT.COMMAND$ = MODEM.INIT.COMMAND$                       ' DA080503
  882.       USER.RESET.COMMAND$ = MODEM.RESET.COMMAND$                     ' DA080503
  883.       USER.INITIALIZE.COMMAND$ = FIRMWARE.INITIALIZE.COMMAND$        ' DA080503
  884.       USER.FIRMWARE.CLEAR.CMND$ = FIRMWARE.CLEAR.COMMAND$            ' DA080503
  885.       USER.FIRMWARE.WRITE.CMND$ = FIRMWARE.WRITE.COMMAND$            ' DA080503
  886.       END SUB                                                        ' KG080901
  887.